#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"
#include <INTRINS.H>
#include "key.h"
#include "timer0.h"

 char KeyNum,Mode,Direction;
//动画数据
//unsigned char code Animation[]={
//	0x3C,0x42,0xA9,0x85,0x85,0xA9,0x42,0x3C,
//	0x3C,0x42,0xA1,0x85,0x85,0xA1,0x42,0x3C,
//	0x3C,0x42,0xA5,0x89,0x89,0xA5,0x42,0x3C,
//};

unsigned char code Animation[]={
	0x10,0x30,0x70,0xf0,0x00,0x00,0x00,0x00,
	0xf0,0x78,0x3c,0x1e,0x0f,0x87,0xc3,0xe1,
	0xf0,0x78,0x3c,0x1e,0x0f,0x87,0xc3,0xe1,
};

 char n=0,Offset=0,Count=0,xoff=0;
void main()
{
	unsigned char i;
	Timer0Init();
	MatrixLED_Init();
	while(1)
	{
		KeyNum=Key();		//获取独立按键键码
		if(KeyNum)			//如果按键按下
		{
			if(KeyNum==1)	//如果K1按键按下,上
			{
				Mode=1;	//模式切换，按一下切换一下模式		
				Direction=0;				
			}
			else if(KeyNum==2)
				{
					Mode=-1;
					Direction=0;
				}//下
			else if(KeyNum==3)
			{Direction=-1;Mode=0;}//左
			else if(KeyNum==4)
			{Direction=1;Mode=0;}//右
		}
		
		for(i=0;i<8;i++)	//循环8次，显示8列数据
		{
//			//P2=_crol_(P2,1);	
//			if(Mode==0)
//			{
				if(i==n)
				{
					
										
						MatrixLED_ShowColumn(i,_crol_(Animation[xoff],Offset));
					
					
				}
				else
				{
					MatrixLED_ShowColumn(i,0x00);
				}
				
//				Count++;			//计次延时
//				if(Count>100)
//				{
//					Count=0;
//					Offset++;		//偏移+8，切换下一帧画面
//					if(Offset>8)
//					{
//						Offset=0;
//					}
//				}	
//			}
//			if(Mode==1)
//			{
//				if(i==n)
//				{MatrixLED_ShowColumn(i,_crol_(Animation[0],Offset));}
//				else
//				{
//					MatrixLED_ShowColumn(i,0x00);
//			}
//				Count++;			//计次延时
//				if(Count>100)
//				{
//					Count=0;
//					Offset--;		//偏移+8，切换下一帧画面
//					if(Offset<0)
//					{
//						Offset=7;
//					}
//				}	
//			}
			
		}
		
	}
}


void Timer0_Routine() interrupt 1
{
	static unsigned int T0Count;
	TL0 = 0x18;		//设置定时初值
	TH0 = 0xFC;		//设置定时初值
	T0Count++;		//T0Count计次，对中断频率进行分频
	if(T0Count>=500)//分频500次，500ms
	{
		T0Count=0;		
		if(Mode==1)
		{				
			Offset++;		//偏移+8，切换下一帧画面
			if(Offset>8)
			{
				Offset=0;
			}		
		}
		if(Mode==-1)
		{	
			Offset--;		//偏移+8，切换下一帧画面
			if(Offset<0)
			{
				Offset=7;
			}		
		}	
		if(Direction==1)
			{				
				n+=Direction;		//偏移+8，切换下一帧画面
				if(n>8)
				{
					n=0;
				}		
			}		
	}
}
//void main()
//{
//	unsigned char i,Offset=0,Count=0;
//	MatrixLED_Init();
//	while(1)
//	{
//		for(i=0;i<8;i++)	//循环8次，显示8列数据
//		{
//			MatrixLED_ShowColumn(i,Animation[i+Offset]);
//		}
//		Count++;			//计次延时
//		if(Count>15)
//		{
//			Count=0;
//			Offset+=8;		//偏移+8，切换下一帧画面
//			if(Offset>16)
//			{
//				Offset=0;
//			}
//		}
//	}
//}

